package com.duan.user.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;
import java.util.UUID;

public class JwtUtils {
    public static String encrypt(Map<String,Object> map, Date dateOut) {
        //当前时间
        Date date = new Date();
        JwtBuilder builder = Jwts.builder().setId(UUID.randomUUID().toString()) //设置唯一编号
                .setSubject("JWT")//设置主题  可以是JSON数据
                .setIssuedAt(date)//设置签发日期
                .setExpiration(dateOut)//用于设置过期时间 ，参数为Date类型数据
                .setClaims(map)
                .signWith(SignatureAlgorithm.HS256, "duan");//设置签名 使用HS256算法，并设置SecretKey(字符串) //构建 并返回一个字符串
        return builder.compact();
    }

    public static Map decrypt( String compactJwt) {
        Claims claims = Jwts.parser().setSigningKey("duan").parseClaimsJws(compactJwt).getBody();
        return claims;
    }
}
